Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
15-07-2026

Inwerkingtreding:
16-07-2026

19.8 Liquiditeit - wat is de cashflow?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 19.8 - Liquiditeit (Cashflow)
2# Parameters: ?startperiode, ?eindperiode
3# Ontologie: versie 3.0.0 of nieuwer
4
5PREFIX onz-fin: <http://purl.org/ozo/onz-fin#>
6PREFIX onz-g:   <http://purl.org/ozo/onz-g#>
7PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>
8
9
10SELECT
11    ("Cashflow" AS ?Kental)
12    (
13        IF(?noemer = 0,
14            "Ongedefinieerd"^^xsd:string,
15            ROUND((?teller / ?noemer) * 100) / 100) AS ?Waarde
16    )
17WHERE {
18
19    # ========================================================================
20    # DEEL 1: Resultatenrekening in EEN scan
21    #   levert S Resultaat na belastingen, Q.VI Afschrijvingen en R.IV Rentelasten
22    # ========================================================================
23    {
24        SELECT
25            (
26                ?p_totaal + ?q_totaal + ?r_i_totaal + ?r_ii_totaal + ?r_iii_totaal + 
27                (?r_iv_plus_totaal - ?r_iv_min_totaal) + 
28                ?s_i_totaal + ?s_ii_totaal 
29                AS ?S_resultaat
30            )
31            (?q_vi_totaal AS ?Q_VI)
32            ((?r_iv_plus_totaal - ?r_iv_min_totaal) AS ?R_IV)
33        WHERE {
34            SELECT
35                (SUM(?p_bedrag)         AS ?p_totaal)
36                (SUM(?q_bedrag)         AS ?q_totaal)
37                (SUM(?q_vi_bedrag)      AS ?q_vi_totaal)
38                (SUM(?r_i_bedrag)       AS ?r_i_totaal)
39                (SUM(?r_ii_bedrag)      AS ?r_ii_totaal)
40                (SUM(?r_iii_bedrag)     AS ?r_iii_totaal)
41                (SUM(?r_iv_plus_bedrag) AS ?r_iv_plus_totaal)
42                (SUM(?r_iv_min_bedrag)  AS ?r_iv_min_totaal)
43                (SUM(?s_i_bedrag)       AS ?s_i_totaal)
44                (SUM(?s_ii_bedrag)      AS ?s_ii_totaal)
45            WHERE {
46                # BIND("2024-01-01"^^xsd:date AS ?startperiode)
47                # BIND("2024-12-31"^^xsd:date AS ?eindperiode)
48
49                ?grootboek_post
50                    a onz-fin:Grootboekpost ;
51                    onz-g:partOf ?rubriek ;
52                    onz-g:hasDate ?datum ;
53                    onz-fin:heeftGeldBedrag ?geld_bedrag .
54
55                # Directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant)
56                { { ?rubriek a onz-fin:Grootboekrekening } UNION { ?rubriek a onz-fin:Grootboekrubriek } }
57                # Anti-dubbeltelling: alleen bladniveau
58                FILTER NOT EXISTS {
59                    ?grootboek_post onz-g:partOf ?child .
60                    ?child onz-g:partOf ?rubriek .
61                    FILTER(?child != ?rubriek)
62                    { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
63                }
64                FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
65                BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
66                FILTER(?datum >= ?startperiode && ?datum <= ?eindperiode)
67
68                # --- P Som der bedrijfsopbrengsten ---
69                BIND(
70                    IF(
71                        STRSTARTS(?rubriekCode, "81")  || STRSTARTS(?rubriekCode, "82")  ||
72                        STRSTARTS(?rubriekCode, "83")  || STRSTARTS(?rubriekCode, "89")  ||
73                        STRSTARTS(?rubriekCode, "919") || STRSTARTS(?rubriekCode, "920") ||
74                        STRSTARTS(?rubriekCode, "930") ||
75                        
76                        STRSTARTS(?rubriekCode, "WOmz") || STRSTARTS(?rubriekCode, "WRev") ||
77                        STRSTARTS(?rubriekCode, "WRvi") || STRSTARTS(?rubriekCode, "WRgr") ||
78                        STRSTARTS(?rubriekCode, "WWvv") || STRSTARTS(?rubriekCode, "WNoa") ||
79                        STRSTARTS(?rubriekCode, "WLbe") || STRSTARTS(?rubriekCode, "WBat") ||
80                        STRSTARTS(?rubriekCode, "WWiv") || STRSTARTS(?rubriekCode, "WOvb"),
81                        ?geld_bedrag, 0) AS ?p_bedrag)
82
83                # --- Q Som der bedrijfslasten (incl. Q.VI Afschrijvingen) ---
84                BIND(
85                    IF(
86                        STRSTARTS(?rubriekCode, "417")  || STRSTARTS(?rubriekCode, "418")  ||
87                        STRSTARTS(?rubriekCode, "411")  || STRSTARTS(?rubriekCode, "412")  ||
88                        STRSTARTS(?rubriekCode, "413")  || STRSTARTS(?rubriekCode, "414")  ||
89                        STRSTARTS(?rubriekCode, "415")  || STRSTARTS(?rubriekCode, "416")  ||
90                        STRSTARTS(?rubriekCode, "419")  || STRSTARTS(?rubriekCode, "420")  ||
91                        STRSTARTS(?rubriekCode, "4221") || STRSTARTS(?rubriekCode, "4223") ||
92                        STRSTARTS(?rubriekCode, "4224") || STRSTARTS(?rubriekCode, "4225") ||
93                        STRSTARTS(?rubriekCode, "4229") || STRSTARTS(?rubriekCode, "4226") ||
94                        STRSTARTS(?rubriekCode, "480")  || STRSTARTS(?rubriekCode, "481")  ||
95                        STRSTARTS(?rubriekCode, "482")  || STRSTARTS(?rubriekCode, "483")  ||
96                        STRSTARTS(?rubriekCode, "484")  || STRSTARTS(?rubriekCode, "423")  ||
97                        STRSTARTS(?rubriekCode, "43")   || STRSTARTS(?rubriekCode, "44")   ||
98                        STRSTARTS(?rubriekCode, "45")   || STRSTARTS(?rubriekCode, "46")   ||
99                        STRSTARTS(?rubriekCode, "47")   || STRSTARTS(?rubriekCode, "486")  ||
100                        STRSTARTS(?rubriekCode, "489")  || STRSTARTS(?rubriekCode, "905")  ||
101                        STRSTARTS(?rubriekCode, "911")  || STRSTARTS(?rubriekCode, "912")  ||
102                        STRSTARTS(?rubriekCode, "913")  || STRSTARTS(?rubriekCode, "914")  ||
103                        STRSTARTS(?rubriekCode, "915")  || STRSTARTS(?rubriekCode, "921")  ||
104                        STRSTARTS(?rubriekCode, "931")  ||
105                        
106                        STRSTARTS(?rubriekCode, "WKpr") || STRSTARTS(?rubriekCode, "WPer") ||
107                        STRSTARTS(?rubriekCode, "WAfs") || STRSTARTS(?rubriekCode, "WWvi") ||
108                        STRSTARTS(?rubriekCode, "WBwv") || STRSTARTS(?rubriekCode, "WBed") ||
109                        STRSTARTS(?rubriekCode, "WOok") || STRSTARTS(?rubriekCode, "WKol") ||
110                        STRSTARTS(?rubriekCode, "WVkf") || STRSTARTS(?rubriekCode, "WAkf"),
111                        ?geld_bedrag, 0) AS ?q_bedrag)
112
113                # --- Q.VI Afschrijvingen op (im)materiele vaste activa (deelverzameling van Q) ---
114                # Prismant: 480-484, RGS: WAfs
115                BIND(
116                    IF(
117                        STRSTARTS(?rubriekCode, "480") || STRSTARTS(?rubriekCode, "481") ||
118                        STRSTARTS(?rubriekCode, "482") || STRSTARTS(?rubriekCode, "483") ||
119                        STRSTARTS(?rubriekCode, "484") || 
120                        
121                        STRSTARTS(?rubriekCode, "WAfs"),
122                        ?geld_bedrag, 0) AS ?q_vi_bedrag)
123
124                # --- R.I  (Prismant 904 / RGS WOvt) ---
125                BIND(IF(STRSTARTS(?rubriekCode, "904") || STRSTARTS(?rubriekCode, "WOvt"), ?geld_bedrag, 0) AS ?r_i_bedrag)
126                # --- R.II (Prismant 900 / RGS WFbeRlm) ---
127                BIND(IF(STRSTARTS(?rubriekCode, "900") || STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_ii_bedrag)
128                # --- R.III (Prismant 903 / RGS WWfa, WVhe) ---
129                BIND(IF(STRSTARTS(?rubriekCode, "903") || STRSTARTS(?rubriekCode, "WWfa") || STRSTARTS(?rubriekCode, "WVhe"), ?geld_bedrag, 0) AS ?r_iii_bedrag)
130                # --- R.IV Rentelasten (Prismant 485/901 / RGS WFbe - WFbeRlm) ---
131                BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901") || STRSTARTS(?rubriekCode, "WFbe"), ?geld_bedrag, 0) AS ?r_iv_plus_bedrag)
132                BIND(IF(STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_iv_min_bedrag)
133                # --- S.I  (RGS WBel) ---
134                BIND(IF(STRSTARTS(?rubriekCode, "WBel"), ?geld_bedrag, 0) AS ?s_i_bedrag)
135                # --- S.II (Prismant 902 / RGS WRed, WAad) ---
136                BIND(IF(STRSTARTS(?rubriekCode, "902") || STRSTARTS(?rubriekCode, "WRed") || STRSTARTS(?rubriekCode, "WAad"), ?geld_bedrag, 0) AS ?s_ii_bedrag)
137            }
138        }
139    }
140
141    # ========================================================================
142    # DEEL 2a: F Langlopende schulden op peildatum VOOR begin meetperiode
143    # ========================================================================
144    {
145        SELECT (SUM(?rubriek_balans) AS ?saldoVoor)
146        WHERE {
147            SELECT ?rubriek
148            	(COALESCE(SAMPLE(?saldo_bedrag), 0) + SUM(COALESCE(?post_bedrag, 0)) AS ?rubriek_balans) 
149            WHERE {
150                # BIND("2024-01-01"^^xsd:date AS ?startperiode)
151
152                # peildatum is altijd één dag voor de startdatum 
153                # (dit is dus géén testparameter en moet uitgecomment blijven!)
154                BIND(?startperiode + "-P1D"^^xsd:duration AS ?peildatum_voor)
155
156                { ?rubriek a onz-fin:Grootboekrubriek } UNION { ?rubriek a onz-fin:Grootboekrekening }
157                BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
158                FILTER(STRSTARTS(?rubriekCode, "07") || ?rubriekCode = "BLas")
159
160                # Laatste EindSaldo op of voor de peildatum (optioneel)
161                OPTIONAL {
162                    ?rubriek onz-g:isAbout ?saldo .
163                    ?saldo a onz-fin:EindSaldo ;
164                           onz-fin:heeftGeldBedrag ?saldo_bedrag ;
165                           onz-g:hasDate ?saldo_datum .
166                    FILTER(?saldo_datum <= ?peildatum_voor)
167                    FILTER NOT EXISTS {
168                        ?rubriek onz-g:isAbout ?saldo2 .
169                        ?saldo2 a onz-fin:EindSaldo ; onz-g:hasDate ?saldo_datum2 .
170                        FILTER(?saldo2 != ?saldo && ?saldo_datum2 <= ?peildatum_voor)
171                        FILTER(?saldo_datum2 > ?saldo_datum
172                               || (?saldo_datum2 = ?saldo_datum && STR(?saldo2) > STR(?saldo)))
173                    }
174                }
175                # Posten NA het saldo (of alle posten als er geen saldo is) t/m peildatum
176                OPTIONAL {
177                    ?post a onz-fin:Grootboekpost ;
178                          onz-g:partOf ?rubriek ;
179                          onz-g:hasDate ?post_datum ;
180                          onz-fin:heeftGeldBedrag ?post_bedrag .
181                    FILTER NOT EXISTS {
182                        ?post onz-g:partOf ?fijner . ?fijner onz-g:partOf+ ?rubriek .
183                    }
184                    FILTER(?post_datum <= ?peildatum_voor && (!BOUND(?saldo_datum) || ?post_datum > ?saldo_datum))
185                }
186            }
187            GROUP BY ?rubriek ?peildatum_voor
188        }
189    }
190
191    # ========================================================================
192    # DEEL 2b: F Langlopende schulden op peildatum LAATSTE dag meetperiode
193    # ========================================================================
194    {
195        SELECT (SUM(?rubriek_balans) AS ?saldoNa)
196        WHERE {
197            SELECT ?rubriek
198            	(COALESCE(SAMPLE(?saldo_bedrag), 0) + SUM(COALESCE(?post_bedrag, 0)) AS ?rubriek_balans)
199            WHERE {
200                # BIND("2024-12-31"^^xsd:date AS ?eind_periode)
201
202                { ?rubriek a onz-fin:Grootboekrubriek } UNION { ?rubriek a onz-fin:Grootboekrekening }
203                BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
204                FILTER(STRSTARTS(?rubriekCode, "07") || ?rubriekCode = "BLas")
205
206                OPTIONAL {
207                    ?rubriek onz-g:isAbout ?saldo .
208                    ?saldo a onz-fin:EindSaldo ;
209                           onz-fin:heeftGeldBedrag ?saldo_bedrag ;
210                           onz-g:hasDate ?saldo_datum .
211                    FILTER(?saldo_datum <= ?eind_periode)
212                    FILTER NOT EXISTS {
213                        ?rubriek onz-g:isAbout ?saldo2 .
214                        ?saldo2 a onz-fin:EindSaldo ; onz-g:hasDate ?saldo_datum2 .
215                        FILTER(?saldo2 != ?saldo && ?saldo_datum2 <= ?eind_periode)
216                        FILTER(?saldo_datum2 > ?saldo_datum
217                               || (?saldo_datum2 = ?saldo_datum && STR(?saldo2) > STR(?saldo)))
218                    }
219                }
220                OPTIONAL {
221                    ?post a onz-fin:Grootboekpost ;
222                          onz-g:partOf ?rubriek ;
223                          onz-g:hasDate ?post_datum ;
224                          onz-fin:heeftGeldBedrag ?post_bedrag .
225                    FILTER NOT EXISTS {
226                        ?post onz-g:partOf ?fijner . ?fijner onz-g:partOf+ ?rubriek .
227                    }
228                    FILTER(?post_datum <= ?eind_periode && (!BOUND(?saldo_datum) || ?post_datum > ?saldo_datum))
229                }
230            }
231            GROUP BY ?rubriek
232        }
233    }
234
235    # Uitgaven ter aflossing van leningen = F(begin) - F(eind)
236    BIND(?saldoVoor - ?saldoNa AS ?aflossing)
237
238    # Teller Cashflow: S + Q.VI afschrijvingen
239    BIND(?S_resultaat - ?Q_VI AS ?teller)
240
241    # Noemer Cashflow: R.IV rentelasten + aflossing van Stap 1 in Berekening
242    BIND(?R_IV + ?aflossing AS ?noemer)
243}
244ORDER BY ?Kental
245